package com.java2207.group1.service;

import com.java2207.group1.bo.AssetsBo;
import com.java2207.group1.bo.ExpenditureBo;
import com.java2207.group1.bo.IncomeBo;
import com.java2207.group1.bo.MonthBo;
import com.java2207.group1.common.LayuiPageVo;
import com.java2207.group1.pojo.Assets;
import com.java2207.group1.pojo.Expenditure;
import com.java2207.group1.pojo.Income;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @author HuiCL
 * @version 1.0
 * @date 2022/7/25 18:00
 */
public interface FinancialManagementService {
//************************************income表*************************************************//
    int addIncome(Income income);

    int updateIncome(Income income);

    int deleteIncomeById(int id);

    int batchRemoveIncome(List<Integer> list);

    LayuiPageVo<Income> incomePageData(Map<String, Object> params);

    List<IncomeBo> incomeExcelData(Income income);


//************************************expenditure表*************************************************//


    int addExpenditure(Expenditure expenditure);

    int updateExpenditure(Expenditure expenditure);

    int deleteExpenditureById(int id);

    int batchRemoveExpenditure(List<Integer> list);

    LayuiPageVo<Expenditure> expenditurePageData(Map<String, Object> params);

    List<ExpenditureBo> expenditureExcelData(Expenditure expenditure);

    //************************************Assets表*************************************************//

    int addAssets(Assets assets);

    int updateAssets(Assets assets);

    int deleteAssetsById(int id);

    Assets selectAssetsOfDate(Date date);

    int updateAssetsOfDate(Date date, int money);

    LayuiPageVo<Assets> assetsPageData(Map<String, Object> params);

    List<AssetsBo> assetsExcelData(Assets assets);

    int maximumForYAxis(List<MonthBo> monthBoList);

    public List<MonthBo> yearlyFinancialStatements(String year);

    @Deprecated
    public List<MonthBo> yearlyFinancialStatementsFromIncomeAndExpenditure(String year);


    int batchRemoveAssets(List<Integer> list);
}
